home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 October: Mac OS SDK / Dev.CD Oct 97 SDK1.toast / Development Kits (Disc 1) / Interfaces&Libraries / Universal / Interfaces / CIncludes / StandardFile.h < prev    next >
Encoding:
C/C++ Source or Header  |  1997-08-12  |  11.2 KB  |  337 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        StandardFile.h
  3.  
  4.      Contains:    Standard File package Interfaces.
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Release:    Universal Interfaces 3.0.1
  8.  
  9.      Copyright:    © 1990-1997, 1997 by Apple Computer, Inc., all rights reserved
  10.  
  11.      Bugs?:        Please include the the file and version information (from above) with
  12.                  the problem description.  Developers belonging to one of the Apple
  13.                  developer programs can submit bug reports to:
  14.  
  15.                      devsupport@apple.com
  16.  
  17. */
  18. #ifndef __STANDARDFILE__
  19. #define __STANDARDFILE__
  20.  
  21. #ifndef __TYPES__
  22. #include <Types.h>
  23. #endif
  24. #ifndef __DIALOGS__
  25. #include <Dialogs.h>
  26. #endif
  27. #ifndef __FILES__
  28. #include <Files.h>
  29. #endif
  30.  
  31.  
  32.  
  33. #if PRAGMA_ONCE
  34. #pragma once
  35. #endif
  36.  
  37. #ifdef __cplusplus
  38. extern "C" {
  39. #endif
  40.  
  41. #if PRAGMA_IMPORT
  42. #pragma import on
  43. #endif
  44.  
  45. #if PRAGMA_STRUCT_ALIGN
  46.     #pragma options align=mac68k
  47. #elif PRAGMA_STRUCT_PACKPUSH
  48.     #pragma pack(push, 2)
  49. #elif PRAGMA_STRUCT_PACK
  50.     #pragma pack(2)
  51. #endif
  52.  
  53.  
  54. enum {
  55.                                                                 /* resource IDs of pre-7.0 get and put dialogs */
  56.     putDlgID                    = -3999,
  57.     getDlgID                    = -4000
  58. };
  59.  
  60.  
  61. enum {
  62.                                                                 /* item offsets of pre-7.0 get and put dialogs */
  63.     putSave                        = 1,
  64.     putCancel                    = 2,
  65.     putEject                    = 5,
  66.     putDrive                    = 6,
  67.     putName                        = 7,
  68.     getOpen                        = 1,
  69.     getCancel                    = 3,
  70.     getEject                    = 5,
  71.     getDrive                    = 6,
  72.     getNmList                    = 7,
  73.     getScroll                    = 8
  74. };
  75.  
  76.  
  77. enum {
  78.                                                                 /* resource IDs of 7.0 get and put dialogs */
  79.     sfPutDialogID                = -6043,
  80.     sfGetDialogID                = -6042
  81. };
  82.  
  83.  
  84. enum {
  85.                                                                 /* item offsets of 7.0 get and put dialogs */
  86.     sfItemOpenButton            = 1,
  87.     sfItemCancelButton            = 2,
  88.     sfItemBalloonHelp            = 3,
  89.     sfItemVolumeUser            = 4,
  90.     sfItemEjectButton            = 5,
  91.     sfItemDesktopButton            = 6,
  92.     sfItemFileListUser            = 7,
  93.     sfItemPopUpMenuUser            = 8,
  94.     sfItemDividerLinePict        = 9,
  95.     sfItemFileNameTextEdit        = 10,
  96.     sfItemPromptStaticText        = 11,
  97.     sfItemNewFolderUser            = 12
  98. };
  99.  
  100.  
  101. enum {
  102.                                                                 /* pseudo-item hits for use in DlgHook */
  103.     sfHookFirstCall                = -1,
  104.     sfHookCharOffset            = 0x1000,
  105.     sfHookNullEvent                = 100,
  106.     sfHookRebuildList            = 101,
  107.     sfHookFolderPopUp            = 102,
  108.     sfHookOpenFolder            = 103,                            /* the following are only in system 7.0+ */
  109.     sfHookLastCall                = -2,
  110.     sfHookOpenAlias                = 104,
  111.     sfHookGoToDesktop            = 105,
  112.     sfHookGoToAliasTarget        = 106,
  113.     sfHookGoToParent            = 107,
  114.     sfHookGoToNextDrive            = 108,
  115.     sfHookGoToPrevDrive            = 109,
  116.     sfHookChangeSelection        = 110,
  117.     sfHookSetActiveOffset        = 200
  118. };
  119.  
  120.  
  121. /* the refcon field of the dialog record during a
  122.  modalfilter or dialoghook contains one of the following */
  123.  
  124. enum {
  125.     sfMainDialogRefCon            = FOUR_CHAR_CODE('stdf'),
  126.     sfNewFolderDialogRefCon        = FOUR_CHAR_CODE('nfdr'),
  127.     sfReplaceDialogRefCon        = FOUR_CHAR_CODE('rplc'),
  128.     sfStatWarnDialogRefCon        = FOUR_CHAR_CODE('stat'),
  129.     sfLockWarnDialogRefCon        = FOUR_CHAR_CODE('lock'),
  130.     sfErrorDialogRefCon            = FOUR_CHAR_CODE('err ')
  131. };
  132.  
  133.  
  134. struct SFReply {
  135.     Boolean                         good;
  136.     Boolean                         copy;
  137.     OSType                             fType;
  138.     short                             vRefNum;
  139.     short                             version;
  140.     Str63                             fName;
  141. };
  142. typedef struct SFReply SFReply;
  143.  
  144. struct StandardFileReply {
  145.     Boolean                         sfGood;
  146.     Boolean                         sfReplacing;
  147.     OSType                             sfType;
  148.     FSSpec                             sfFile;
  149.     ScriptCode                         sfScript;
  150.     short                             sfFlags;
  151.     Boolean                         sfIsFolder;
  152.     Boolean                         sfIsVolume;
  153.     long                             sfReserved1;
  154.     short                             sfReserved2;
  155. };
  156. typedef struct StandardFileReply StandardFileReply;
  157.  
  158. /* for CustomXXXFile, ActivationOrderListPtr parameter is a pointer to an array of item numbers */
  159. typedef const short *                    ActivationOrderListPtr;
  160. typedef CALLBACK_API( short , DlgHookProcPtr )(short item, DialogPtr theDialog);
  161. typedef CALLBACK_API( Boolean , FileFilterProcPtr )(CInfoPBPtr pb);
  162. /* the following also include an extra parameter of "your data pointer" */
  163. typedef CALLBACK_API( short , DlgHookYDProcPtr )(short item, DialogPtr theDialog, void *yourDataPtr);
  164. typedef CALLBACK_API( Boolean , ModalFilterYDProcPtr )(DialogPtr theDialog, EventRecord *theEvent, short *itemHit, void *yourDataPtr);
  165. typedef CALLBACK_API( Boolean , FileFilterYDProcPtr )(CInfoPBPtr pb, void *yourDataPtr);
  166. typedef CALLBACK_API( void , ActivateYDProcPtr )(DialogPtr theDialog, short itemNo, Boolean activating, void *yourDataPtr);
  167. typedef STACK_UPP_TYPE(DlgHookProcPtr)                             DlgHookUPP;
  168. typedef STACK_UPP_TYPE(FileFilterProcPtr)                         FileFilterUPP;
  169. typedef STACK_UPP_TYPE(DlgHookYDProcPtr)                         DlgHookYDUPP;
  170. typedef STACK_UPP_TYPE(ModalFilterYDProcPtr)                     ModalFilterYDUPP;
  171. typedef STACK_UPP_TYPE(FileFilterYDProcPtr)                     FileFilterYDUPP;
  172. typedef STACK_UPP_TYPE(ActivateYDProcPtr)                         ActivateYDUPP;
  173. enum { uppDlgHookProcInfo = 0x000003A0 };                         /* pascal 2_bytes Func(2_bytes, 4_bytes) */
  174. enum { uppFileFilterProcInfo = 0x000000D0 };                     /* pascal 1_byte Func(4_bytes) */
  175. enum { uppDlgHookYDProcInfo = 0x00000FA0 };                     /* pascal 2_bytes Func(2_bytes, 4_bytes, 4_bytes) */
  176. enum { uppModalFilterYDProcInfo = 0x00003FD0 };                 /* pascal 1_byte Func(4_bytes, 4_bytes, 4_bytes, 4_bytes) */
  177. enum { uppFileFilterYDProcInfo = 0x000003D0 };                     /* pascal 1_byte Func(4_bytes, 4_bytes) */
  178. enum { uppActivateYDProcInfo = 0x000036C0 };                     /* pascal no_return_value Func(4_bytes, 2_bytes, 1_byte, 4_bytes) */
  179. #define NewDlgHookProc(userRoutine)                             (DlgHookUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppDlgHookProcInfo, GetCurrentArchitecture())
  180. #define NewFileFilterProc(userRoutine)                             (FileFilterUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppFileFilterProcInfo, GetCurrentArchitecture())
  181. #define NewDlgHookYDProc(userRoutine)                             (DlgHookYDUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppDlgHookYDProcInfo, GetCurrentArchitecture())
  182. #define NewModalFilterYDProc(userRoutine)                         (ModalFilterYDUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppModalFilterYDProcInfo, GetCurrentArchitecture())
  183. #define NewFileFilterYDProc(userRoutine)                         (FileFilterYDUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppFileFilterYDProcInfo, GetCurrentArchitecture())
  184. #define NewActivateYDProc(userRoutine)                             (ActivateYDUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppActivateYDProcInfo, GetCurrentArchitecture())
  185. #define CallDlgHookProc(userRoutine, item, theDialog)             CALL_TWO_PARAMETER_UPP((userRoutine), uppDlgHookProcInfo, (item), (theDialog))
  186. #define CallFileFilterProc(userRoutine, pb)                     CALL_ONE_PARAMETER_UPP((userRoutine), uppFileFilterProcInfo, (pb))
  187. #define CallDlgHookYDProc(userRoutine, item, theDialog, yourDataPtr)  CALL_THREE_PARAMETER_UPP((userRoutine), uppDlgHookYDProcInfo, (item), (theDialog), (yourDataPtr))
  188. #define CallModalFilterYDProc(userRoutine, theDialog, theEvent, itemHit, yourDataPtr)  CALL_FOUR_PARAMETER_UPP((userRoutine), uppModalFilterYDProcInfo, (theDialog), (theEvent), (itemHit), (yourDataPtr))
  189. #define CallFileFilterYDProc(userRoutine, pb, yourDataPtr)         CALL_TWO_PARAMETER_UPP((userRoutine), uppFileFilterYDProcInfo, (pb), (yourDataPtr))
  190. #define CallActivateYDProc(userRoutine, theDialog, itemNo, activating, yourDataPtr)  CALL_FOUR_PARAMETER_UPP((userRoutine), uppActivateYDProcInfo, (theDialog), (itemNo), (activating), (yourDataPtr))
  191. typedef OSType                             SFTypeList[4];
  192. /*
  193.     The GetFile "typeList" parameter type has changed from "SFTypeList" to "ConstSFTypeListPtr".
  194.     For C, this will add "const" and make it an in-only parameter.
  195.     For Pascal, this will require client code to use the @ operator, but make it easier to specify long lists.
  196.  
  197.     ConstSFTypeListPtr is a pointer to an array of OSTypes.
  198. */
  199. typedef const OSType *                    ConstSFTypeListPtr;
  200.  
  201. EXTERN_API( void )
  202. SFPutFile                        (Point                     where,
  203.                                  ConstStr255Param         prompt,
  204.                                  ConstStr255Param         origName,
  205.                                  DlgHookUPP             dlgHook,
  206.                                  SFReply *                reply)                                THREEWORDINLINE(0x3F3C, 0x0001, 0xA9EA);
  207.  
  208. EXTERN_API( void )
  209. SFGetFile                        (Point                     where,
  210.                                  ConstStr255Param         prompt,
  211.                                  FileFilterUPP             fileFilter,
  212.                                  short                     numTypes,
  213.                                  ConstSFTypeListPtr     typeList,
  214.                                  DlgHookUPP             dlgHook,
  215.                                  SFReply *                reply)                                THREEWORDINLINE(0x3F3C, 0x0002, 0xA9EA);
  216.  
  217. EXTERN_API( void )
  218. SFPPutFile                        (Point                     where,
  219.                                  ConstStr255Param         prompt,
  220.                                  ConstStr255Param         origName,
  221.                                  DlgHookUPP             dlgHook,
  222.                                  SFReply *                reply,
  223.                                  short                     dlgID,
  224.                                  ModalFilterUPP         filterProc)                            THREEWORDINLINE(0x3F3C, 0x0003, 0xA9EA);
  225.  
  226. EXTERN_API( void )
  227. SFPGetFile                        (Point                     where,
  228.                                  ConstStr255Param         prompt,
  229.                                  FileFilterUPP             fileFilter,
  230.                                  short                     numTypes,
  231.                                  ConstSFTypeListPtr     typeList,
  232.                                  DlgHookUPP             dlgHook,
  233.                                  SFReply *                reply,
  234.                                  short                     dlgID,
  235.                                  ModalFilterUPP         filterProc)                            THREEWORDINLINE(0x3F3C, 0x0004, 0xA9EA);
  236.  
  237. EXTERN_API( void )
  238. StandardPutFile                    (ConstStr255Param         prompt,
  239.                                  ConstStr255Param         defaultName,
  240.                                  StandardFileReply *    reply)                                THREEWORDINLINE(0x3F3C, 0x0005, 0xA9EA);
  241.  
  242. EXTERN_API( void )
  243. StandardGetFile                    (FileFilterUPP             fileFilter,
  244.                                  short                     numTypes,
  245.                                  ConstSFTypeListPtr     typeList,
  246.                                  StandardFileReply *    reply)                                THREEWORDINLINE(0x3F3C, 0x0006, 0xA9EA);
  247.  
  248. EXTERN_API( void )
  249. CustomPutFile                    (ConstStr255Param         prompt,
  250.                                  ConstStr255Param         defaultName,
  251.                                  StandardFileReply *    reply,
  252.                                  short                     dlgID,
  253.                                  Point                     where,
  254.                                  DlgHookYDUPP             dlgHook,
  255.                                  ModalFilterYDUPP         filterProc,
  256.                                  ActivationOrderListPtr  activeList,
  257.                                  ActivateYDUPP             activate,
  258.                                  void *                    yourDataPtr)                        THREEWORDINLINE(0x3F3C, 0x0007, 0xA9EA);
  259.  
  260. EXTERN_API( void )
  261. CustomGetFile                    (FileFilterYDUPP         fileFilter,
  262.                                  short                     numTypes,
  263.                                  ConstSFTypeListPtr     typeList,
  264.                                  StandardFileReply *    reply,
  265.                                  short                     dlgID,
  266.                                  Point                     where,
  267.                                  DlgHookYDUPP             dlgHook,
  268.                                  ModalFilterYDUPP         filterProc,
  269.                                  ActivationOrderListPtr  activeList,
  270.                                  ActivateYDUPP             activate,
  271.                                  void *                    yourDataPtr)                        THREEWORDINLINE(0x3F3C, 0x0008, 0xA9EA);
  272.  
  273. EXTERN_API( OSErr )
  274. StandardOpenDialog                (StandardFileReply *    reply);
  275.  
  276. #if CGLUESUPPORTED
  277. EXTERN_API_C( void )
  278. sfpputfile                        (Point *                where,
  279.                                  const char *            prompt,
  280.                                  const char *            origName,
  281.                                  DlgHookUPP             dlgHook,
  282.                                  SFReply *                reply,
  283.                                  short                     dlgID,
  284.                                  ModalFilterUPP         filterProc);
  285.  
  286. EXTERN_API_C( void )
  287. sfgetfile                        (Point *                where,
  288.                                  const char *            prompt,
  289.                                  FileFilterUPP             fileFilter,
  290.                                  short                     numTypes,
  291.                                  ConstSFTypeListPtr     typeList,
  292.                                  DlgHookUPP             dlgHook,
  293.                                  SFReply *                reply);
  294.  
  295. EXTERN_API_C( void )
  296. sfpgetfile                        (Point *                where,
  297.                                  const char *            prompt,
  298.                                  FileFilterUPP             fileFilter,
  299.                                  short                     numTypes,
  300.                                  ConstSFTypeListPtr     typeList,
  301.                                  DlgHookUPP             dlgHook,
  302.                                  SFReply *                reply,
  303.                                  short                     dlgID,
  304.                                  ModalFilterUPP         filterProc);
  305.  
  306. EXTERN_API_C( void )
  307. sfputfile                        (Point *                where,
  308.                                  const char *            prompt,
  309.                                  const char *            origName,
  310.                                  DlgHookUPP             dlgHook,
  311.                                  SFReply *                reply);
  312.  
  313. #endif  /* CGLUESUPPORTED */
  314.  
  315.  
  316.  
  317. #if PRAGMA_STRUCT_ALIGN
  318.     #pragma options align=reset
  319. #elif PRAGMA_STRUCT_PACKPUSH
  320.     #pragma pack(pop)
  321. #elif PRAGMA_STRUCT_PACK
  322.     #pragma pack()
  323. #endif
  324.  
  325. #ifdef PRAGMA_IMPORT_OFF
  326. #pragma import off
  327. #elif PRAGMA_IMPORT
  328. #pragma import reset
  329. #endif
  330.  
  331. #ifdef __cplusplus
  332. }
  333. #endif
  334.  
  335. #endif /* __STANDARDFILE__ */
  336.  
  337.